package top.jnaw.jee.utils.wechat;

import java.util.Date;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import top.jnaw.jee.utils.Log;

public class MessageService {

  public String newMessageRequest(HttpServletRequest request) {
    String respMessage = null;
    try {
      // xml请求解析
      Map<String, String> requestMap = MessageUtil.parseXml(request);
      // 发送方帐号（open_id）
      String fromUserName = requestMap.get("FromUserName");
      // 公众帐号
      String toUserName = requestMap.get("ToUserName");
      // 消息类型
      String msgType = requestMap.get("MsgType");
      // 消息内容
      String content = requestMap.get("Content");
      // 文本消息
      if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_TEXT)) {
        //这里根据关键字执行相应的逻辑
                /*if(content.equals("xxx")){

                }*/
        //自动回复
        TextMessage text = new TextMessage();
        text.setContent("霍霍哈嘿" + content);
        text.setToUserName(fromUserName);
        text.setFromUserName(toUserName);
        text.setCreateTime(new Date().getTime());
        text.setMsgType(msgType);
        respMessage = MessageUtil.textMessageToXml(text);
      }
      // 事件推送
      else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_EVENT)) {
        String eventType = requestMap.get("Event");// 事件类型
        // 订阅
        if (eventType.equals(MessageUtil.EVENT_TYPE_SUBSCRIBE)) {
          //文本消息
          TextMessage text = new TextMessage();
          text.setContent("我不管，我最美！！");
          text.setToUserName(fromUserName);
          text.setFromUserName(toUserName);
          text.setCreateTime(new Date().getTime());
          text.setMsgType(MessageUtil.RESP_MESSAGE_TYPE_TEXT);
          respMessage = MessageUtil.textMessageToXml(text);
        }
        // 取消订阅后用户再收不到公众号发送的消息，因此不需要回复消息
        else if (eventType.equals(MessageUtil.EVENT_TYPE_UNSUBSCRIBE)) {// 取消订阅

        }
      }
    } catch (Exception e) {
      Log.e("error......");
    }
    return respMessage;
  }
}
